package cn.fl.project.transform;

import java.util.ArrayList;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.project.dto.PrjBscInfoDTO;
import cn.fl.project.vo.PrjBscInfoVO;

/**
 * @Description: 项目基础信息表 转换器
 * @Description: VO是客户端传递数据到服务端进行转换的数据
 * @Description: VO转换数据变成DTO传递到服务端
 * @Description: VO不能在服务端出现
 */
public class PrjBscInfoVOTransform {


    /**
     * DTO 转  VO
     *
     * @param dto PrjBscInfoDTO
     * @return PrjBscInfoVO
     */
    public static PrjBscInfoVO toVO(PrjBscInfoDTO dto) {
        PrjBscInfoVO vo = null;
        if (dto != null) {
            vo = new PrjBscInfoVO();
            vo.setId(dto.getId());
            vo.setPrjTypCd(dto.getPrjTypCd());//项目类型（PRJ0002）
            vo.setBizTypCd(dto.getBizTypCd());//业务类型（PRJ0006）
            vo.setAgntTypCd(dto.getAgntTypCd());//代理商类型（PRJ0001）
            vo.setPrjNm(dto.getPrjNm());//项目名称
            vo.setRgnPrCd(dto.getRgnPrCd());//区域-省
            vo.setRgnCyCd(dto.getRgnCyCd());//区域-市
            vo.setIsGrpBiz(dto.getIsGrpBiz());//是否团单（SYS0021）
            vo.setBizResCd(dto.getBizResCd());//业务来源（PRJ0003）
            vo.setCstId(dto.getCstId());//客户ID
            vo.setCstMgrId(dto.getCstMgrId());//客户经理ID
            vo.setCstMgrNm(dto.getCstMgrNm());//客户经理名称
            vo.setCstMgrOrgCd(dto.getCstMgrOrgCd());//客户经理组织架构代码
            vo.setBuOrgCd(dto.getBuOrgCd());//所属事业部
            vo.setInvestTypCd(dto.getInvestTypCd());//实地调查类型（PRJ0004）
            vo.setDeductWayCd(dto.getDeductWayCd());//保证金抵扣方式（PRJ0005）
            vo.setInsSol(dto.getInsSol());//保险方案
            vo.setRefereeTel(dto.getRefereeTel());//推荐人联系方式
            vo.setPurpose(dto.getPurpose());//申请融资租赁目的(资金用途)
            vo.setRepayWay(dto.getRepayWay());//还款来源
            vo.setGuarMsr(dto.getGuarMsr());//担保措施
            vo.setOthLsDesc(dto.getOthLsDesc());//租赁物及其他可抵押物概况
            vo.setPrjRem(dto.getPrjRem());//备注
            vo.setDsCd(dto.getDsCd());//数据来源（SYS0047）
            vo.setPrjStsCd(dto.getPrjStsCd());//项目状态
            vo.setPInstId(dto.getPInstId());//流程实例ID
            vo.setBuOrgCdNm(dto.getBuOrgCdNm());
            vo.setOrgId(dto.getOrgId());//组织机构id
            vo.setCrtTm(dto.getCrtTm());//创建时间
            vo.setCrtUsrId(dto.getCrtUsrId());//创建人
            vo.setMdfTm(dto.getMdfTm());//修改时间
            vo.setMdfUsrId(dto.getMdfUsrId());//修改人
            vo.setCstNm(dto.getCstNm());//客户名称
            vo.setLsCntNo(dto.getLsCntNo());//合同号
            vo.setPrjIndCd(dto.getPrjIndCd());//租赁物用途
            vo.setPrjOthIndCd(dto.getPrjOthIndCd());//其他行业（租赁物用途）（重卡）
            vo.setIsDel(dto.getIsDel());//是否删除
            vo.setpNo(dto.getpNo());//流程编号

            vo.setPrjTypCdNm(dto.getPrjTypCdNm()); //项目类型名称
            vo.setBizTypCdNm(dto.getBizTypCdNm());//业务类型名称
            vo.setAgntTypCdNm(dto.getAgntTypCdNm());// 代理商类型名称
            vo.setIsGrpBizNm(dto.getIsGrpBizNm());//是否团单
            vo.setBizResCdNm(dto.getBizResCdNm());//业务来源
            vo.setInvestTypCdNm(dto.getInvestTypCdNm());//实地调查类型
            vo.setDeductWayCdNm(dto.getDeductWayCdNm());//保证金抵扣方式
            vo.setDsCdNm(dto.getDsCdNm());//数据来源
            vo.setPrjStsCdNm(dto.getPrjStsCdNm());//项目状态
            vo.setLoanTypCdNm(dto.getLoanTypCdNm());//业务种类细分名称
            vo.setCstMgrOrgCdNm(dto.getCstMgrOrgCdNm());//客户经理所属组织架构名称
            vo.setApplyDt(dto.getApplyDt());
            vo.setCntTypCd(dto.getCntTypCd());//合同签署方式
            vo.setCntTypCdNm(dto.getCntTypCdNm());//合同签署方式名称
            vo.setCstTypCdNm(dto.getCstTypCdNm());//客户分类名称
            vo.setSubBizTypCd(dto.getSubBizTypCd());
            vo.setBizModCd(dto.getBizModCd());
            vo.setBuyType(dto.getBuyType());
            vo.setFundRasInsId(dto.getFundRasInsId());
            vo.setFundRasInsNm(dto.getFundRasInsNm());
            vo.setInsCode(dto.getInsCode());
            vo.setIsHaveUpStruct(dto.getIsHaveUpStruct());//是否含上装
            vo.setRlRcCstBscInfoId(dto.getRlRcCstBscInfoId());
            vo.setIsBigCstWork(dto.getIsBigCstWork());
            vo.setBigCstWorkSource(dto.getBigCstWorkSource());


            vo.setReCstNm(dto.getReCstNm());
            vo.setReCertNo(dto.getReCertNo());
            vo.setReIdAddr(dto.getReIdAddr());
            vo.setReMp1(dto.getReMp1());
            vo.setReMp2(dto.getReMp2());
            vo.setRePostAddr(dto.getRePostAddr());
            vo.setReWorkAddr(dto.getReWorkAddr());
            vo.setReWorkPlc(dto.getReWorkPlc());
            vo.setOrgSignDt(dto.getOrgSignDt());
            vo.setOrgSignStsCd(dto.getOrgSignStsCd());
            vo.setOrgLoanNo(dto.getOrgLoanNo());

            vo.setPrjDtList(PrjPrdDtlVOTransform.toVOList(dto.getPrjDtList()));
            vo.setPrjQuatPrps(PrjQuatPrpsVOTransform.toVO(dto.getPrjQuatPrps()));
            vo.setPrjPaySchMYqVOList(PrjPaySchMYqVOTransform.toVOList(dto.getPrjPaySchMYqDTOList()));
            vo.setRcCstBscInfoId(dto.getRcCstBscInfoId());
            vo.setIsChkRcCstPrj(dto.getIsChkRcCstPrj());
            vo.setCertNo(dto.getCertNo());
            vo.setPledge(dto.getPledge());//是否需要抵押
            vo.setOpen(dto.getOpen());
            vo.setPledgeNm(dto.getPledgeNm());
            vo.setAuditInfo(dto.getAuditInfo());
            if(null != dto.getPrjCstAccInfoDTO()){
                vo.setPrjCstAccInfoVO(PrjCstAccInfoVOTransform.toVO(dto.getPrjCstAccInfoDTO()));
            }
            vo.setCalId(dto.getCalId());
            vo.setMainGdsTypCd(dto.getMainGdsTypCd());
            vo.setGoodsRes(dto.getGoodsRes());
            vo.setPrdQty(dto.getPrdQty());
            vo.setAuditorName(dto.getAuditorName());
            vo.setVisitTm(dto.getVisitTm());
            vo.setVisitStatus(dto.getVisitStatus());
            vo.setSchr_6(dto.getSchr_6());
            vo.setSchr_6Nm(dto.getSchr_6Nm());
            vo.setLastAuditorName(dto.getLastAuditorName());
            vo.setLastVisitTm(dto.getLastVisitTm());
            vo.setCrtUsrNm(dto.getCrtUsrNm());
            vo.setIsSplMfr(dto.getIsSplMfr());
            vo.setCstMgrRgnCd(dto.getCstMgrRgnCd());
            vo.setCstMgrRgnCdNm(dto.getCstMgrRgnCdNm());
            vo.setIsInsBiz(dto.getIsInsBiz());
            vo.setIsAllowNonIns(dto.getIsAllowNonIns());
            vo.setHomeVisit(dto.getHomeVisit());
            //支付表类型
            vo.setPaySchTypCd(dto.getPaySchTypCd());
            vo.setHomeVisit(dto.getHomeVisit());
            vo.setIsSelfMelt(dto.getIsSelfMelt());
            vo.setHomeVisitNm(dto.getHomeVisitNm());
            vo.setHomeVisitEndDt(dto.getHomeVisitEndDt());
            vo.setHidRisk(dto.getHidRisk());
            //实际供应商
            vo.setRealSplNm(dto.getRealSplNm());
            //实际联系方式
            vo.setRealTel(dto.getRealTel());
            //路由预筛选ID
            vo.setPreRouteId(dto.getPreRouteId());
            vo.setPreResId(dto.getPreResId());
            // 是否内部转让
            vo.setIsInternalTransfer(dto.getIsInternalTransfer());
            vo.setCstTypCd(dto.getCstTypCd());
            vo.setMdfType(dto.getMdfType());
            vo.setLsDt(dto.getLsDt());
            vo.setFstRepayDt(dto.getFstRepayDt());
            vo.setReturnVisitNm(dto.getReturnVisitNm());
            vo.setCompensatoryType(dto.getCompensatoryType()); //代偿担保业务类型
        }
        return vo;
    }

    /**
     * VO 转 DTO
     *
     * @param vo PrjBscInfoVO
     * @return PrjBscInfoDTO
     */
    public static PrjBscInfoDTO toDTO(PrjBscInfoVO vo) {
        PrjBscInfoDTO dto = null;
        if (vo != null) {
            dto = new PrjBscInfoDTO();
            dto.setId(vo.getId());
            dto.setPrjTypCd(vo.getPrjTypCd());//项目类型（PRJ0002）
            dto.setBizTypCd(vo.getBizTypCd());//业务类型（PRJ0006）
            dto.setAgntTypCd(vo.getAgntTypCd());//代理商类型（PRJ0001）
            dto.setPrjNm(vo.getPrjNm());//项目名称
            dto.setRgnPrCd(vo.getRgnPrCd());//区域-省
            dto.setRgnCyCd(vo.getRgnCyCd());//区域-市
            dto.setIsGrpBiz(vo.getIsGrpBiz());//是否团单（SYS0021）
            dto.setBizResCd(vo.getBizResCd());//业务来源（PRJ0003）
            dto.setCstId(vo.getCstId());//客户ID
            dto.setCstMgrId(vo.getCstMgrId());//客户经理ID
            dto.setCstMgrNm(vo.getCstMgrNm());//客户经理名称
            dto.setCstMgrOrgCd(vo.getCstMgrOrgCd());//客户经理组织架构代码
            dto.setBuOrgCd(vo.getBuOrgCd());//所属事业部
            dto.setInvestTypCd(vo.getInvestTypCd());//实地调查类型（PRJ0004）
            dto.setDeductWayCd(vo.getDeductWayCd());//保证金抵扣方式（PRJ0005）
            dto.setInsSol(vo.getInsSol());//保险方案
            dto.setRefereeTel(vo.getRefereeTel());//推荐人联系方式
            dto.setPurpose(vo.getPurpose());//申请融资租赁目的(资金用途)
            dto.setRepayWay(vo.getRepayWay());//还款来源
            dto.setGuarMsr(vo.getGuarMsr());//担保措施
            dto.setOthLsDesc(vo.getOthLsDesc());//租赁物及其他可抵押物概况
            dto.setPrjRem(vo.getPrjRem());//备注
            dto.setDsCd(vo.getDsCd());//数据来源（SYS0047）
            dto.setPrjStsCd(vo.getPrjStsCd());//项目状态
            dto.setPInstId(vo.getPInstId());//流程实例ID
            dto.setBuOrgCdNm(vo.getBuOrgCdNm());//事业部名称
            dto.setOrgId(vo.getOrgId());//组织机构id
            dto.setLsCntNo(vo.getLsCntNo());
            dto.setPrjIndCd(vo.getPrjIndCd());//租赁物用途
            dto.setPrjOthIndCd(vo.getPrjOthIndCd());//其他行业（租赁物用途）（重卡）
            dto.setIsDel(vo.getIsDel());//是否删除
            dto.setpNo(vo.getpNo());//流程编号
            dto.setCrtTm(vo.getCrtTm());//创建时间
            dto.setCrtUsrId(vo.getCrtUsrId());//创建人
            dto.setMdfTm(vo.getMdfTm());//修改时间
            dto.setMdfUsrId(vo.getMdfUsrId());//修改人
            dto.setCstNm(vo.getCstNm());//客户名称
            dto.setIsHaveUpStruct(vo.getIsHaveUpStruct());
            dto.setRlRcCstBscInfoId(vo.getRlRcCstBscInfoId());
            dto.setIsBigCstWork(vo.getIsBigCstWork());
            dto.setBigCstWorkSource(vo.getBigCstWorkSource());


            dto.setPrjTypCdNm(vo.getPrjTypCdNm()); //项目类型名称
            dto.setBizTypCdNm(vo.getBizTypCdNm());//业务类型名称
            dto.setAgntTypCdNm(vo.getAgntTypCdNm());// 代理商类型名称
            dto.setIsGrpBizNm(vo.getIsGrpBizNm());//是否团单
            dto.setBizResCdNm(vo.getBizResCdNm());//业务来源
            dto.setInvestTypCdNm(vo.getInvestTypCdNm());//实地调查类型
            dto.setDeductWayCdNm(vo.getDeductWayCdNm());//保证金抵扣方式
            dto.setDsCdNm(vo.getDsCdNm());//数据来源
            dto.setPrjStsCdNm(vo.getPrjStsCdNm());//项目状态
            dto.setLoanTypCdNm(vo.getLoanTypCdNm());//业务种类细分名称
            dto.setApplyDt(vo.getApplyDt());
            dto.setCstTypCdNm(vo.getCstTypCdNm());//客户分类名称
            dto.setCntTypCd(vo.getCntTypCd());//合同签署方式
            dto.setCntTypCdNm(vo.getCntTypCdNm());//合同签署方式名称
            dto.setSubBizTypCd(vo.getSubBizTypCd());
            dto.setBizModCd(vo.getBizModCd());
            dto.setBuyType(vo.getBuyType());
            dto.setFundRasInsId(vo.getFundRasInsId());
            dto.setFundRasInsNm(vo.getFundRasInsNm());
            dto.setInsCode(vo.getInsCode());

            dto.setReCstNm(vo.getReCstNm());
            dto.setReCertNo(vo.getReCertNo());
            dto.setReIdAddr(vo.getReIdAddr());
            dto.setReMp1(vo.getReMp1());
            dto.setReMp2(vo.getReMp2());
            dto.setRePostAddr(vo.getRePostAddr());
            dto.setReWorkAddr(vo.getReWorkAddr());
            dto.setReWorkPlc(vo.getReWorkPlc());
            dto.setPrjDtList(PrjPrdDtlVOTransform.toDTOList(vo.getPrjDtList()));
            dto.setPrjQuatPrps(PrjQuatPrpsVOTransform.toDTO(vo.getPrjQuatPrps()));
            dto.setPrjPaySchMYqDTOList(PrjPaySchMYqVOTransform.toDTOList(vo.getPrjPaySchMYqVOList()));

            dto.setRcCstBscInfoId(vo.getRcCstBscInfoId());
            dto.setIsChkRcCstPrj(vo.getIsChkRcCstPrj());
            dto.setCertNo(vo.getCertNo());
            dto.setPledge(vo.getPledge());//是否需要抵押
            dto.setOpen(vo.getOpen());
            dto.setPledgeNm(vo.getPledgeNm());
            dto.setAuditInfo(vo.getAuditInfo());

            dto.setOrgSignDt(vo.getOrgSignDt());
            dto.setOrgSignStsCd(vo.getOrgSignStsCd());
            dto.setOrgLoanNo(vo.getOrgLoanNo());

            if(null != vo.getPrjCstAccInfoVO()){
                dto.setPrjCstAccInfoDTO(PrjCstAccInfoVOTransform.toDTO(vo.getPrjCstAccInfoVO()));
            }

            dto.setCalId(vo.getCalId());
            dto.setMainGdsTypCd(vo.getMainGdsTypCd());
            dto.setGoodsRes(vo.getGoodsRes());
            dto.setPrdQty(vo.getPrdQty());
            dto.setAuditorName(vo.getAuditorName());
            dto.setVisitTm(vo.getVisitTm());
            dto.setVisitStatus(vo.getVisitStatus());
            dto.setSchr_6(vo.getSchr_6());
            dto.setSchr_6Nm(vo.getSchr_6Nm());
            dto.setLastAuditorName(vo.getLastAuditorName());
            dto.setLastVisitTm(vo.getLastVisitTm());
            dto.setCrtUsrNm(vo.getCrtUsrNm());
            dto.setIsSplMfr(vo.getIsSplMfr());
            dto.setCstMgrRgnCd(vo.getCstMgrRgnCd());
            dto.setCstMgrRgnCdNm(vo.getCstMgrRgnCdNm());
            dto.setIsInsBiz(vo.getIsInsBiz());
            dto.setIsAllowNonIns(vo.getIsAllowNonIns());
            dto.setHomeVisit(vo.getHomeVisit());
            dto.setIsSelfMelt(vo.getIsSelfMelt());
            dto.setHomeVisitNm(vo.getHomeVisitNm());
            dto.setHomeVisitEndDt(vo.getHomeVisitEndDt());
            dto.setHidRisk(vo.getHidRisk());
            //实际供应商
            dto.setRealSplNm(vo.getRealSplNm());
            //实际联系方式
            dto.setRealTel(vo.getRealTel());
            //路由预筛选ID
            dto.setPreRouteId(vo.getPreRouteId());
            dto.setMdfType(vo.getMdfType());
            dto.setPreResId(vo.getPreResId());
            // 是否内部转让
            dto.setIsInternalTransfer(vo.getIsInternalTransfer());
            dto.setReturnVisitNm(vo.getReturnVisitNm());
            dto.setCompensatoryType(vo.getCompensatoryType()); //代偿担保业务类型
        }
        return dto;
    }

    /**
     * DTO集合 转 VO集合
     *
     * @param list
     * @return List<PrjBscInfoVO>
     */
    public static List<PrjBscInfoVO> toVOList(List<PrjBscInfoDTO> list) {
        List<PrjBscInfoVO> voList = new ArrayList<PrjBscInfoVO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (PrjBscInfoDTO dto : list) {
                voList.add(toVO(dto));
            }
        }
        return voList;
    }

    /**
     * VO集合 转 DTO集合
     *
     * @param list List<PrjBscInfoVO>
     * @return List<PrjBscInfoDTO>
     */
    public static List<PrjBscInfoDTO> toDTOList(List<PrjBscInfoVO> list) {
        List<PrjBscInfoDTO> dtoList = new ArrayList<PrjBscInfoDTO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (PrjBscInfoVO vo : list) {
                dtoList.add(toDTO(vo));
            }
        }
        return dtoList;
    }
}
